package com.ipc.app.dal.dao;

import java.util.List;

import com.ipc.app.dal.doObject.InformationDO;

/**
 * @author haijie.zhang
 * 
 */
public interface InformationDAO {

	/**
	 * @param informationDO
	 */
	public void createInformation(InformationDO informationDO);

	/**
	 * @param informationID
	 * @return
	 */
	public InformationDO getInformationById(String informationID);

	/**
	 * @param informationID
	 * @return
	 */
	public InformationDO lockInformation(String informationID);

	/**
	 * @param informationDO
	 */
	public void updateInformation(InformationDO informationDO);

	/**
	 * @param city
	 *            当前城市
	 * @param pageNumber
	 *            每页数量
	 * @param pagerIndex
	 *            当前页数
	 * @return
	 */
	public List<InformationDO> getLastestInformationDOByPagerAndCity(
			String city, String informationType, int pageNumber, int pagerIndex);

	/**
	 * @param city
	 * @return
	 */
	public int getInformationCountByCity(String city, String informationType);

	/**
	 * @param city
	 *            当前城市
	 * @param pageNumber
	 *            每页数量
	 * @param pagerIndex
	 *            当前页数
	 * @return
	 */
	public List<InformationDO> getInformationBetween2City(String departure,
			String destination, String informationType, int pageNumber,
			int pagerIndex);

	/**
	 * 查询城市间信息数量
	 * 
	 * @param departure
	 * @param destination
	 * @return
	 */
	public int getInformationCountBetweenCities(String departure,
			String destination, String informationType);

	/**
	 * 由经纬度查询始发地信息总量
	 * 
	 * @param startX
	 * @param endX
	 * @param startY
	 * @param endY
	 * @return
	 */
	public int getRoundInformationCount(Double startX, Double endX,
			Double startY, Double endY, String informationType);

	/**
	 * 由经纬度查询始发地信息
	 * 
	 * @param startX
	 * @param endX
	 * @param startY
	 * @param endY
	 * @return
	 */
	public List<InformationDO> getRoundInformation(Double startX, Double endX,
			Double startY, Double endY, String informationType, int pageNumber,
			int pagerIndex);

	/**
	 * 由出发地及目的地搜索总数
	 * 
	 * @param dep_startX
	 * @param dep_endX
	 * @param dep_startY
	 * @param dep_endY
	 * @param des_startX
	 * @param des_endX
	 * @param des_startY
	 * @param des_endY
	 * @param pageNumber
	 * @param pagerIndex
	 * @return
	 */
	public int getInformationByDepAndDesCount(Double dep_startX,
			Double dep_endX, Double dep_startY, Double dep_endY,
			Double des_startX, Double des_endX, Double des_startY,
			Double des_endY, String informationType, int pageNumber,
			int pagerIndex);

	/**
	 * 由出发地及目的地查询信息
	 * 
	 * @param dep_startX
	 * @param dep_endX
	 * @param dep_startY
	 * @param dep_endY
	 * @param des_startX
	 * @param des_endX
	 * @param des_startY
	 * @param des_endY
	 * @param pageNumber
	 * @param pagerIndex
	 * @return
	 */
	public List<InformationDO> getInformationByDepAndDes(Double dep_startX,
			Double dep_endX, Double dep_startY, Double dep_endY,
			Double des_startX, Double des_endX, Double des_startY,
			Double des_endY, String informationType, int pageNumber,
			int pagerIndex);

	/**
	 * 获取用户发布信息
	 * 
	 * @param userID
	 * @param pageNumber
	 * @param pageIndex
	 * @return
	 */
	public List<InformationDO> getInformationByUserID(String userID,
			String informationType, int pageNumber, int pageIndex);

	/**
	 * 获取用户发布数量
	 * 
	 * @param userID
	 * @return
	 */
	public int getInformationCountByUserId(String userID, String informationType);

	/**
	 * 过期消息
	 * 
	 * @return
	 */
	public void setExpiredInformation(String status);

}
